@chapter Designing with Mac Xconq Designer's tools and capabilities are available via the Design item in the Edit menu. The display changes to show you everything in the world, you get a number of special privileges (such as the ability to look at and move ANY unit), and you get a designer's tools palette. @section Using the Palette In general, palette items use option-click and option-shift-click to cycle through possible values, and many also have a popup menu. Also note that the selection can be changed without changing the tool; you have to click in the tool and get a heavy border around it before the tool is actually changed. Each type of designer tool has a distinct cursor when over a map window, so look for that as well. @subsection Painting Terrain If you select the terrain item in the palette, then clicking/dragging in a map paints the current terrain type displayed in the palette (Option-clicking the terrain item cycles through all the types, shift-option-click does the same thing in reverse order). The background terrain type can be cycled via command-click and command-shift-click. @subsection Creating Units The side item creates a popup with the sides - use it to set the side with which a new unit will be created. Not all units are allowed on all sides - @i{Xconq} marks the sides that are allowed with the current unit type, and the unit types that are allowed with the current side. @subsection Painting People If you select the side item in the palette, you can click/drag in a map to set the side of the people in the cells clicked or dragged over. @subsection Painting Material You can create materials in the terrain by selecting the materials item in the palette, then painting in any map. @subsection Creating Named Features The features item in the palette includes several buttons and a popup menu that displays all the features currently defined. You can click on the buttons to create, destroy, and rename a feature. You can add or remove cells of a feature by painting in any map. @subsection Painting Elevations You can set the elevations of terrain by selecting the elevations item in the palette, then painting in any map. @subsection Painting Temperatures You can set the temperatures by selecting the temperatures item in the palette, then painting in any map. @subsection Painting Winds You can set the direction and force of winds by painting them. The values of direction and force are controlled by option-[shift-]click and command-[shift-]click, respectively. @subsection Painting Clouds If you select the clouds item of the palette, you can set the density of cloud cover by painting. @section Beyond the Designer Palette The designer palette and privileges just scratch the surface of what you can do with @i{Xconq}. You can define your own complete games with @i{Xconq} using its Game Design Language (GDL), a declarative Lisp-like language with many more capabilities than could be provided interactively (in much the same way that HyperTalk(tm) scripting adds to basic HyperCard(tm)). The @i{Xconq} manual chapter ``Designing Games with @i{Xconq}'' goes into much more detail about @i{Xconq}'s programmability, and the chapter ``Reference Manual'' is the complete description of GDL's abilities. For the Mac specifically, there are some additional customizations that you can do. If the Resources file has a PICT whose name is `` game'', then if a player selects in the new game dialog, this PICT will be displayed in the dialog. This is useful to give prospective players more of an idea of what the game might be like, plus it's a chance to show off your artistry! (If you're a lousy artist, just make a screen shot of the map and use that.) The area for the picture is about 200 pixels across and 100 high; pictures smaller than that will be centered, while larger pictures will be clipped to fit. @section Images If you want to change the icons and pictures in an existing game, or if you want to define new ones, you can do this either with a resource editor such as ResEdit, or with a resource compiler such as Rez, or by editing the portable ``imf'' files. @i{Xconq} can use PICTs, icons, and patterns to draw with; collectively these will be called ``images''. A group of images that all represent different views of the same thing is an ``image family''. The concept is similar to the icon families used by Macintosh programs, but is much more general, since you can have any number of images of different sizes and depths, as well as images embedded in each other. The resource file @code{:lib-mac:Images} is the main repository of Mac imagery. You can resource-edit this file, close it, start up @i{Xconq}, and see the results. For instance, if you want to improve the appearance of the ``city20'' image, you will find a 32x32 @code{'cicn'} with that name as well as a 16x16 'sicn'. You can modify these as you like. Note that the 'sicn' includes a mask sicn, as does the @code{'cicn'}. Masks are optional, but improve the appearance of the images. If you have a new type in a game and you want an image for it, just create a resource, such as a @code{'cicn'}, give it the name of the type or its @code{image-name} property, and you're done. The standard resource types for images are @code{'cicn'}, @code{'ICON'}, @code{'PAT '}, @code{'ppat'}, @code{'SICN'}, and @code{'PICT'}. If a resource of one of these types has a name matching the @code{image-name} (or the type name if no image name is defined) of a type in a game, then @i{Xconq} will use that resource. There are two additional resource types: @code{'XCic'} and @code{'XCif'}. The @code{'XCic'} resources are named colors that can be referred to via @code{color} properties of types and sides. @code{'XCif'} resources are raw image family forms in GDL syntax. If the contents of an image family can be totally defined by the standard resource types, then there need not be an @code{'XCif'} resource, but if an image has any embedded subimages, or a specific location for subimages, then this information will be in the @code{'XCif'} resource. You can edit by defining this resource type as @code{'TEXT'}, which will give you a text editor for the resource, or by just opening the @code{'TEXT'} editor on the resource. For more details about the syntax of image families in GDL, see the reference manual. Warning: don't ever make a @code{'cicn'} with id 256! For some reason, if there is a @code{'cicn'} 256 in either the application or in any of the resource files that it has open, the small color icons in both the apple menu (far left) and the application menu (far right) become small unrecognizable blobs. This effect seems to be innocuous behaviorwise, but the appearance is poor, and users choose menu items by looking at those icons, so trashing them is a bad thing to do. @section IMFApp IMFApp is a utility for examining and converting the image families used by Xconq. The general concept of image families is similar to that of the Finder icon families, where several depths and sizes of an icon are available for use in different situations. Xconq adds extra complexity to the concept by including tiling patterns, by allowing icons to be embedded in each other, and by using the same image families on several different platforms. The platform-independent format would be hard to edit, so IMFApp includes functions to convert between the common format and Mac resources. These functions are available from the File Menu. In addition, IMFApp also allows you to look at the images. You can control the images' size, overlay, and use of color. The primary use for this is to test how an image works in various situations. Also, if you design games, this is a good place to start when choosing images for your game. Since there are hundreds of images available already, the chances are good that the images you want have already been designed. The File menu has items to open and save imf and resource files. New clears any existing images. Opening multiple files merges their contents. The Edit menu is not used. The View menu includes all image appearance controls. Everything in this menu affects only the @emph{display} of the images, and does not, in any way, affect the image families themselves. Display options include size of images, color/mono, name, mask, background/emblem images, and more. @section Sounds Mac @i{Xconq} handles sounds in a very simple way. The resource file @samp{:lib-mac:Sounds} includes a number of named @code{'snd '} resources. [not actually useful yet - names wired into macmap.c]